// #include <stdio.h>
// #include <stdlib.h>
// #include "windows.h"
// // 节点结构体
// typedef struct Node {
//     int data;
//     struct Node* prev;
//     struct Node* next;
// } Node;
//
// // 双链表结构体
// typedef struct DoublyLinkedList {
//     Node* head;
// } DoublyLinkedList;
//
// // 初始化双链表
// DoublyLinkedList* createList() {
//     DoublyLinkedList* list = (DoublyLinkedList*)malloc(sizeof(DoublyLinkedList));
//     list->head = NULL;
//     return list;
// }
//
// // 插入节点
// void insert(DoublyLinkedList* list, int data) {
//     Node* newNode = (Node*)malloc(sizeof(Node));
//     newNode->data = data;
//     newNode->next = NULL;
//
//     if (list->head == NULL) {
//         newNode->prev = NULL;
//         list->head = newNode;
//         return;
//     }
//
//     Node* last = list->head;
//     while (last->next != NULL) {
//         last = last->next;
//     }
//
//     last->next = newNode;
//     newNode->prev = last;
// }
//
// // 删除节点
// void deleteNode(DoublyLinkedList* list, int key) {
//     Node* current = list->head;
//
//     while (current != NULL) {
//         if (current->data == key) {
//             if (current->prev != NULL) {
//                 current->prev->next = current->next;
//             } else {
//                 list->head = current->next; // 删除头节点
//             }
//             if (current->next != NULL) {
//                 current->next->prev = current->prev;
//             }
//             free(current);
//             return;
//         }
//         current = current->next;
//     }
// }
//
// // 前向遍历
// void forwardTraverse(DoublyLinkedList* list) {
//     Node* current = list->head;
//     while (current != NULL) {
//         printf("%d ", current->data);
//         current = current->next;
//     }
//     printf("\n");
// }
//
// // 后向遍历
// void backwardTraverse(DoublyLinkedList* list) {
//     Node* current = list->head;
//     if (current == NULL) return;
//
//     while (current->next != NULL) {
//         current = current->next;
//     }
//
//     while (current != NULL) {
//         printf("%d ", current->data);
//         current = current->prev;
//     }
//     printf("\n");
// }
//
// // 查找节点
// Node* find(DoublyLinkedList* list, int key) {
//     Node* current = list->head;
//     while (current != NULL) {
//         if (current->data == key) {
//             return current;
//         }
//         current = current->next;
//     }
//     return NULL;
// }
//
// // 主函数示例
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     DoublyLinkedList* list = createList();
//     insert(list, 10);
//     insert(list, 20);
//     insert(list, 30);
//
//     printf("前向遍历: ");
//     forwardTraverse(list);
//
//     printf("后向遍历: ");
//     backwardTraverse(list);
//
//     printf("删除节点 20\n");
//     deleteNode(list, 20);
//
//     printf("前向遍历: ");
//     forwardTraverse(list);
//
//     Node* foundNode = find(list, 30);
//     if (foundNode) {
//         printf("找到节点: %d\n", foundNode->data);
//     } else {
//         printf("未找到节点\n");
//     }
//
//     return 0;
// }
